package in.model;
import in.lib.Debug;
import in.lib.manager.UserManager;
import in.model.base.Message;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import lombok.ToString;
import android.os.Parcel;
import android.os.Parcelable;
import com.esotericsoftware.kryo.serializers.TaggedFieldSerializer.Tag;
import com.google.gson.JsonObject;
/**
* Serializable class for messages
*/
@ToString(includeFieldNames = true, callSuper = true)
public class PrivateMessage extends Message
{
@Tag(0x01) @NonNull @Getter @Setter private String channelId = "";
@Override public PrivateMessage createFrom(JsonObject message)
{
return createFrom(message, UserManager.getUser(), false);
}
@Override public PrivateMessage createFrom(JsonObject post, boolean allowDeleted)
{
return createFrom(post, UserManager.getUser(), allowDeleted);
}
/**
* Parses the return API object into a message class using the specified user
* @param user The jsonobject message from the API
* @param acc The user to use when parsing the object
* @return The new Post object
*/
@Override public PrivateMessage createFrom(JsonObject message, User acc, boolean allowDeleted)
{
super.createFrom(message, acc, allowDeleted);
try
{
channelId = message.get("channel_id").getAsString();
return this;
}
catch(Exception e)
{
Debug.out(e);
return null;
}
}
@Override public PrivateMessage createFrom(Parcel object)
{
setChannelId(object.readString());
super.createFrom(object);
return this;
}
@Override public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(getChannelId());
super.writeToParcel(dest, flags);
}
public static final Parcelable.Creator<PrivateMessage> CREATOR = new Creator<PrivateMessage>()
{
@Override public PrivateMessage[] newArray(int size)
{
return new PrivateMessage[size];
}
@Override public PrivateMessage createFromParcel(Parcel source)
{
return new PrivateMessage().createFrom(source);
}
};
}